iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

IT工作中曾遇到的問題系列 第 14

連線Oracle DB的第三方程式出現ora-01012: not logged on

  • 分享至 

  • xImage
  •  

有一個第三方的程式,它會連線新系統的Oracle DB,但是每一段時間都會斷線,此時會出現了一個訊息:ora-01012: not logged on

登入DB後查看log,發現有下列的訊息,應該就是原因了:

KILL SESSION for sid=(124, 55212):
Reason = profile limit idle_time

很明顯有一個session受到profile的限制而被kill掉。

連到db並查詢是否有啟用資源限制:

SQL> show parameter resource_limit;

NAME             TYPE       VALUE
--------------   --------   -------
resource_limit   boolean    true

第三方程式是用TEST001來連線DB,所以在DB上查詢USER TEST001的profile:

SQL> select profile from dba_users where username = 'TEST001';

PROFILE
--------
A_PROFILE

查詢A_PROFIEL這個profile的時間限制:

SQL> select PROFILE,RESOURCE_NAME,LIMIT from dba_profiles where profile='A_PROFILE'  and resource_name in ('IDLE_TIME','CONNECT_TIME');

PROFILE	       RESOURCE_NAME    LIMIT
-----------	   ---------------  -------
A_PROFILE	   IDLE_TIME	         30
A_PROFILE	CONNECT_TIME	   DEFAULT

把限制改長一點:

SQL> ALTER PROFILE A_PROFILE LIMIT IDLE_TIME 60;

或是把限制取消:

SQL> ALTER PROFILE A_PROFIEL LIMIT IDLE_TIME UNLIMITED;

最後我們是選擇把時間限制取消,這樣問題也解決了


上一篇
Oracle Data Guard Archive Gap
下一篇
Solaris 10利用RBAC加強root帳號安全性
系列文
IT工作中曾遇到的問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
MatthewWangUS
iT邦新手 3 級 ‧ 2023-09-27 09:56:58

某種程上那算是DB的保護措施。凡是咬住的連線就會吃部份的DB記憶體。假設有太多這種程式而不去清。DB的效能是會被影響的。所以才會有 idel 太久 kill 的功能。修改idel 時間或時間限制取消並不是一個好的解決方式。

Keven iT邦新手 5 級 ‧ 2023-09-27 10:32:55 檢舉

/images/emoticon/emoticon41.gif

我要留言

立即登入留言